home *** CD-ROM | disk | FTP | other *** search
- #include "lips.h"
- lips {
- /*======================================================================
- Naive Reverse for 1000 LIPS
- ======================================================================*/
-
- lips(0).
- lips(N') |- rev(); rev(); lips(N-1).
-
- rev() :- r(); 1 < 0.
- rev().
-
- # r performs 496 LI's on 30-element list.
- r() |- reverse([1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 0], _).
-
- # reverse applied to N-element list performs 1/2(N*N + 3*N + 2) LI's.
- reverse([], []).
- reverse([X'|Xs'], Zs) |- reverse(Xs, Ys');
- append(Ys, [X], Zs').
-
- append([], Ys', Ys).
- append([X'|Xs'], Ys', [X|Zs]) |- append(Xs, Ys, Zs').
- }
-